﻿/// <summary>
/// <Filename>: IMotion.cs
/// Author: Jiang Xiaolong
/// Created: 2015.01.26
/// Version: 1.0
/// Company: Sunnytech
/// Function: Motion运动平台接口；
///
/// Changed By:
/// Modification Time:
/// Discription:
/// <summary>
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Data;

namespace Motion.MotionPlatform
{
	/// <summary>
	/// Motion运动模块接口，规定好通用的方法；
	/// </summary>
	public interface IMotion
	{
		//属性******
		//当前类状态
		CurrentState State { get; set; }
		//标准时间
		float StandardTime { get; set; }
		//起始时间
		float StartTime { get; set; }
		//终止时间
		float EndTime { get; set; }


		//方法******
		//结构初始化
		void Init();
		//暂停控制
		void Pause(bool play_status);
		//速率控制
		void ChangeRate(float current_rate, float current_time);
		//运动
		void Move(float current_time, float speed_rate, float delta_time);
		//时间管理
		bool TimesUp(float current_time);
		//后处理，主要是位置修正
		void PostProcess();
	}


	/// <summary>
	/// 运动信息处理工厂类；
	/// </summary>
	public interface IMotionInfoManager
	{
		/// <summary>
		/// 信息获取函数，用应用的方式直接将IMotion注入类中进行处理；
		/// </summary>
		/// <param name="motion_symbol">当前运动标识符；</param>
		/// <param name="state">教练考状态索引；</param>
		/// <param name="data_row">当前传入的Excel数据行；</param>
		/// <param name="row_id">当前行对应ID号；</param>
		/// <param name="group_table">当前Group数据表；</param>
		/// <param name="motion_list">简单运动类列表；</param>
		/// <param name="complex_motion_list">复合运动类列表；</param>
		/// <returns>解析是否正确；</returns>
		bool InfoGet(string motion_symbol, int state, DataRow data_row, string row_id, DataTable group_table, IList<IMotion> motion_list, IList<IList<IMotion>> complex_motion_list);
	}


	/// <summary>
	/// 运动信息处理子类；
	/// </summary>
	public interface IMotionFunctionInfo
	{
		/// <summary>
		/// 信息获取函数，用应用的方式直接将IMotion注入类中进行处理；
		/// </summary>
		/// <param name="data_row">当前传入的Excel数据行；</param>
		/// <param name="row_id">当前行对应ID号；</param>
		/// <param name="group_table">当前Group数据表；</param>
		/// <param name="motion_list">简单运动类列表；</param>
		/// <param name="complex_motion_list">复合运动类列表；</param>
		/// <returns>解析是否正确；</returns>
		bool InfoGet(DataRow data_row, string row_id, DataTable group_table, IList<IMotion> motion_list, IList<IList<IMotion>> complex_motion_list);
	}
}
